//
//  ZqlHomeController.swift
//  ZqlSinaWeiBo
//
//  Created by 赵乾龙 on 16/1/30.
//  Copyright © 2016年 Mr.zhao. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD


class ZqlHomeController: ZqlBaseTableVC {
    
    //模型数组
    private lazy var statusesList = ZqlStatusListViewModel()
    
    //添加自定义下拉刷新控件属性
    let wbRefreshControl = ZqlWBRefreshControl()
    
    //cell的标识
    private let identifier = "cell"

    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !userLogin{
            visitorLoginView?.setUpInfoWith("关注一些人，回这里看看有什么惊喜", imageName: nil)
        return
        }
        
        prepareForTableView()
        loadUserData()
}
    //每次显示页面都会执行
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
//        loadUserData()
    }
    
    //懒加载下拉加载更多的小菊花
    private lazy var indicatorView:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
    
    //注册cell
    private func prepareForTableView() {
        
        tableView.registerClass(ZqlStatusCell.self, forCellReuseIdentifier: identifier)
        
        //设置预估行高
        tableView.estimatedRowHeight = 300
        tableView.rowHeight = UITableViewAutomaticDimension
        
        //设置分割线的样式
        tableView.separatorStyle = .None
        
        //添加到tableView
        self.tableView.addSubview(wbRefreshControl)
        //添加监听事件
        wbRefreshControl.addTarget(self, action: "loadUserData", forControlEvents: .ValueChanged)
        //将下菊花设为tableView的底部视图
        tableView.tableFooterView = indicatorView
        
        //开启tableView的点击快速回到顶部的属性
        tableView.scrollsToTop = true
    }
    
    //加载首页数据
    @objc   private func loadUserData(){
        //开始转动
        refreshControl?.beginRefreshing()
        
        statusesList.loadHomeData(indicatorView.isAnimating()) { (isSuccess) -> () in
            //停止转动
            self.refreshControl?.endRefreshing()
            
            //停止转动上啦加载更多菊花  
            self.indicatorView.stopAnimating()
            
            //网络请求结束后修改下拉状态
            self.wbRefreshControl.endRefresh()
            
            if isSuccess {

                //刷新界面
                self.tableView.reloadData()
                
            }else{
                //请求数据失败
                SVProgressHUD.showErrorWithStatus("网络请求失败")
            }
        }
    }
}
//实现tableView的数据源方法
extension ZqlHomeController{
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusesList.statuses.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath) as! ZqlStatusCell
        //加载最后一个cell,并且下拉菊花没有转动在获取数据
        if indexPath.row == statusesList.statuses.count - 1 && !indicatorView.isAnimating(){
            //开始转动下拉菊花
            indicatorView.startAnimating()
            //获取数据
            loadUserData()
        }
        cell.model = statusesList.statuses[indexPath.row]
        return cell
    }
    
}














